/**
 * @mainpage Shape
 * @author Alberto De Pena
 *
 * This is a class that encapsulates the related properties of a shape
 */
#ifndef SHAPE_H
#define SHAPE_H

/**
 * @file Shape.hpp
 * 
 * This header file contains the prototypes of the functions needed to manipulate a shape 
 * object.
 */
#include "Canvas.hpp"
/**
 * This class specifies the manner in which the shape object can be implemented.
 */

class Shape
{
protected:
	COLORREF color;
	int x, y, size;

public:
	//Default constructor
	Shape();
	//Constructor with the properties of a shape
	Shape( int x, int y, int size, COLORREF color );
	//Destructor
	virtual ~Shape();

	//Pure virtual methods ( every class that derrives from Shape should have one of this ).
	virtual bool contains( int x, int y )=0;
	virtual void draw( Canvas& canvas )=0;
	//Methods that all kinds of shapes can perform.
	void move( int dx, int dy );
	//Increases or decreases a shape
	void resize( int dsize );
	
};

#endif